wiki
Benvenuto
Guest
, sei in:
<root>
Manual
Manuale IT
Tech
•
Login
• Welcome
Guest
, you are in:
<root>
Manual
Manuale IT
Tech
•
Login
ScrewTurn Wiki
Navigazione (Tech)
¶
Pagina Principale
Pagina Principale (root)
Pagina Casuale
Nuova Pagina
Tutte le Pagine
Categorie
Percorsi di Navigazione
Amministrazione
Gestione File
Registrati
Ricerca wiki
»
Navigation (Tech)
¶
Main Page
Main Page (root)
Random Page
Create a new Page
All Pages
Categories
Navigation Paths
Administration
File Management
Create Account
Search the wiki
»
Back
Tab Dinamici
Modified on 2009/11/03 15:17
by
roberto
Categorized as
Uncategorized
Creare tab dimanici, consente di estendere le schede delle aziende, dei contatti e dei lead a piacimento, integrandole eventualmente con altri applicativi Per creare un nuovo ''tab'', per prima cosa bisogna aggiungere un file .ascx (il nome è indifferente) nella cartella ''TabControls''. {s:draft} Allego un esempio di codebehind per semplificare le cose: @@ using System; using System.Collections; using System.Configuration; using System.Data; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using Digita.Tustena.Base; using Digita.Tustena.WebControls; using Digita.Tustena.Core; using Digita.Tustena.BusinessObjects; public partial class MyTab : GUserControl, ITabbed { protected void Page_Load(object sender, EventArgs e) { //check if the tab is visible, instead skip tab initialization if (Parent.Parent is TustenaTabber) ((TustenaTabber)Parent.Parent).TabClick += new TabClickDelegate(StatsTab_TabClick); } protected override void OnInit(EventArgs e) { button.Click += new EventHandler(button_Click); base.OnInit(e); } void StatsTab_TabClick(string tabId) { if (tabId == "vis"+this.tabId) { // parameters are exposed through Context. The id is "CE_Id" int id = (int)GetContextElements("Id"); CompanyBO companyBO = new CompanyBO(UC); companyBO.Load(id); myId.Text = id.ToString(); myCompany.Text = companyBO.CompanyName; } } void button_Click(object sender, EventArgs e) { ((G)Page).RegisterJavascriptBlock(GetType(), "test", "alert('" + myCompany.Text + "');", true); } #region ITabbed Interface Declaration public string tabCaption { //Tab Name get { return "MyTab"; } } public TabContainersList tabContainerType { // Target Tabber get { return TabContainersList.CrmCompany; } } public string tabId { // id get { return "warrantyTab"; } } public byte tabPosition { // tab position get { return 2; } } #endregion } @@ ASP.NET html Example Page @@ <%@ Control Language="C#" AutoEventWireup="true" CodeFile="MyTab.ascx.cs" Inherits="MyTab " %> <asp:LinkButton runat="server" ID="myId"></asp:LinkButton> <asp:LinkButton runat="server" ID="myCompany"></asp:LinkButton> <asp:Button runat="server" ID="button" Text="Test Postback" /> @@ Una volta creato il file .cs, bisogna far ereditare la classe da {{ITabber}} e implementare esplicitamente l'interfaccia come nell'esempio. * {{tabCaption}} - Etichetta che comparirà sulla linguetta * {{tabContainerType}} - Scheda a cui il tab si aggancerà, riferirsi all'Enum per le schede implementare * {{tabId}} - Id del Tab, deve essere univoco * {{tabPosition}} - Posizione del tab nel controllo Completando le proprietà, il tab sarà completo e caricato dinamicamente nella scheda. Ci sono alcuni unteripri punti da tenere in considerazione. Come si vede nell'esempio, nel page_load viene verificato se il controllo è visibile: questo serve ad evitare di inizializzare se il tab non è selezionato, e evita di accedere al context che conterrebbe elementi vuoti. Infatti è nel context che il controllo trova i riferimenti al Business Object su cui la scheda è caricata. Nello specifico, ogni pagina scrive nel context l'Id del BO aperto ed è accessibili attraverso: <nowiki>(int)GetContextElements("Id");</nowiki>
Meta Keywords:
Meta Description:
Change Comment: